#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "infirmier.h"
/*--------------------------------------------------------------------------------------------*/
void saisir_infirmier(Infirmier *I,char fichier_infirmier[])
{
int ID;
char ma[10]="masculin";
char fe[10]="feminin";
do
{
printf("donner le nom\n");
scanf("%s",I->nom);
}
while((strlen(I->nom))<3);
do
{
printf("donner le prenom\n");
scanf("%s",I->prenom);
}
while((strlen(I->prenom))<3);
do
{
printf("donner le sexe\n");
scanf("%s",I->sexe);
}
while(((strcmp(ma,I->sexe))!=0)&&((strcmp(fe,I->sexe))!=0));
do
{
printf("donner la date d'embauche\n");
scanf("%d%d%d",&(I->date_embauche.jour),&(I->date_embauche.mois),&(I->date_embauche.annee));
}
while(((I->date_embauche.jour)>31)||((I->date_embauche.jour)<1)||((I->date_embauche.mois)<1)||((I->date_embauche.mois)>12)||((I->date_embauche.annee)>2014||((I->date_embauche.annee)<2000)));
if((I->date_embauche.mois)==2)
{
do
{
printf("erreur de saisie du jour !!!\n");
printf("donner le jour d'embauche correctte !!\n");
scanf("%d",&(I->date_embauche.jour));
}
while(((I->date_embauche.jour)>28)||((I->date_embauche.jour)<1));
}
do
{
printf("donner la date de naissance\n");
scanf("%d%d%d",&(I->date_naissance.jour),&(I->date_naissance.mois),&(I->date_naissance.annee));
}
while(((I->date_naissance.jour)>31)||((I->date_naissance.jour)<1)||((I->date_naissance.mois)<1)||((I->date_naissance.mois)>12)||((I->date_naissance.annee)>1989));
if((I->date_naissance.mois)==2)
{
do
{
printf("erreur de saisie du jour !!!\n");
printf("donner le jour de naissance correctte !!\n");
scanf("%d",&(I->date_naissance.jour));
}
while(((I->date_embauche.jour)>28)||((I->date_embauche.jour)<1));
}
printf("donner le role\n");
scanf("%s",I->role);
do
{
printf("donner la cin\n");
scanf("%ld",&(I->cin));
}
while(((I->cin)<1000000)||((I->cin)>99999999));
do
{
printf("donner l'age\n");
scanf("%d",&(I->age));
}
while(((I->age)<26)||((I->age)>75));
do
{
printf("donner le num d_identifiant\n");
scanf("%d",&ID);
}
while((ID<10000)||(ID>99999));

 
FILE *f ;
    f=fopen(fichier_infirmier,"rb") ;
if (f!= NULL)
     {
      while(fread(I,sizeof(Infirmier),1,f)!=0)
       {
          if( ID==I->ID)
            {
                do
                {
                 printf("donner un autre  num d_identifiant\n");
                 scanf("%d",&ID);
                }
                while(((ID)<10000)||((ID)>99999)||(ID==I->ID));
            }
       }
I->ID=ID;
     }
else
{
printf("erreur lors de l'ouverture du fichier_infirmier\n");
}
fclose(f);
}
/*--------------------------------------------------------------------------------*/

void enregistrer_infirmier(char fichier_infirmier[],Infirmier *I,int *n)
{
FILE*f;
f=fopen(fichier_infirmier,"ab");
if(f!=NULL)
{
 if((*n)<MAX)
  {
 saisir_infirmier(I,"infirmier.txt");
 fwrite(I,sizeof(Infirmier),1,f);
 (*n)++;
  }
}
else
{
printf("erreur lors de l'ouverture du fichier_infirmier\n");
}
fclose(f);
}
/*--------------------------------------------------------------------------------------------*/
void supprimer_infirmier_ID( char fichier_infirmier[],int ID)
{
    char tmp_infirmier[]="tmp_infirmier.txt";
    char archive_infirmier[]="archive_infirmier.txt";
    FILE *f ;
    FILE *t ;
    FILE *r ;
    Infirmier I;
    f=fopen(fichier_infirmier,"rb") ;
    t=fopen(tmp_infirmier,"wb") ;
    r=fopen(archive_infirmier,"wb");
    if (f!= NULL && t!=NULL && r!=NULL)
     {
      while(fread(&I,sizeof(Infirmier),1,f)!=0)
       {
          if( ID!=I.ID)
            {
             fwrite(&I,sizeof(Infirmier),1,t) ;
            }
           if( ID==I.ID)
            {
             fwrite(&I,sizeof(Infirmier),1,r) ;
            }
       }
     }
   printf("-----------------------\n");
   printf("le patient ayant le numero ID  %d est retiré de la liste et est archiver\n",ID );
   printf("-----------------------\n");
     fclose(f) ;
     fclose(t) ;
     fclose(r) ;
     f=fopen(fichier_infirmier,"wb") ;
     t=fopen(tmp_infirmier,"rb") ;
     if(f!=NULL && t!=NULL)
{
     while(fread (&I,sizeof(Infirmier),1,t)!=0)
     {fwrite(&I,sizeof(Infirmier),1,f) ;}
}
     fclose(f) ;
     fclose(t) ;     
     t=fopen(tmp_infirmier,"wb+") ;
     if (t!=NULL)	
     {
      printf("le fichier tmp_infirmier est vider\n\n");
     }
}
/*-------------------------------------------------------------------------------------------------*/
void afficher_archive_infirmier(char archive_infirmier[],Infirmier I)
{
FILE *r;
r=fopen(archive_infirmier,"rb");
if(r!=NULL)
{
while(fread(&I,sizeof(Infirmier),1,r)!=0)
{
printf("nom:%s\tprenom:%s\tsexe:%s\trole:%s\tcin:%ld\tage:%d\tidentifiant:%d\tdate de naissance:%d/%d/%d\tdate d'embauche:%d/%d/%d\n\n\n",I.nom,I.prenom,I.sexe,I.role,I.cin,I.age,I.ID,I.date_naissance.jour,I.date_naissance.mois,I.date_naissance.annee,I.date_embauche.jour,I.date_embauche.mois,I.date_embauche.annee);
}
}
else
printf("l'archive est vide\n");
fclose(r);
}


/*------------------------------------------------------------*/
void afficher_infirmier_ID(char fichier_infirmier[],Infirmier I,int ID)
{
FILE*f;

f=fopen(fichier_infirmier,"rb");
if(f!=NULL)
{
	fread(&I,sizeof(Infirmier),1,f);
   do  
  {
        if(ID==I.ID)
        { 
         printf("nom:%s\tprenom:%s\tsexe:%s\trole:%s\tcin:%ld\tage:%d\tidentifiant:%d\tdate de naissance:%d/%d/%d\tdate d'embauche:%d/%d/%d\n\n\n",I.nom,I.prenom,I.sexe,I.role,I.cin,I.age,I.ID,I.date_naissance.jour,I.date_naissance.mois,I.date_naissance.annee,I.date_embauche.jour,I.date_embauche.mois,I.date_embauche.annee);
        }
  }
  while(((fread(&I,sizeof(Infirmier),1,f))!=0)&&(feof(f)!=0));
}
else
{
printf("erreur lors de l'ouverture du fichier_infirmier");
}
fclose(f);
}

/*-ok---------------------------------------------------------------------------------------*/
int existence_infirmier_ID(char fichier_infirmier[],Infirmier I,int ID)
{
FILE*f;
f=fopen(fichier_infirmier,"rb");
if(f!=NULL)
{
	fread(&I,sizeof(Infirmier),1,f);
   do  
  {
        if(ID==I.ID)
        {
        return 1;
        }
  }
  while(((fread(&I,sizeof(Infirmier),1,f))!=0)&&(feof(f)!=0));
}
else
{
printf("erreur lors de l'ouverture du fichier_infirmier");
}
fclose(f);
}
/*--ok-------------------------------------------------------------------------------------*/
void afficher_liste_infirmier(char fichier_infirmier[])
{
FILE*f;
Infirmier I;
f=fopen(fichier_infirmier,"rb");
if(f!=NULL)
{
strcpy (I.nom," " ) ;
strcpy(I.prenom," ");
I.age=0;
I.cin=0;
strcpy(I.role," ");
I.ID=0;
strcpy(I.sexe," ");
I.date_embauche.jour=0;
I.date_embauche.mois=0;
I.date_embauche.annee=0;
I.date_naissance.jour=0;
I.date_naissance.mois=0;
I.date_naissance.annee=0;


   fread(&I,sizeof(Infirmier),1,f);
   do
  {
   printf("nom:%s\tprenom:%s\tsexe:%s\trole:%s\tcin:%ld\tage:%d\tidentifiant:%d\tdate de naissance:%d/%d/%d\tdate d'embauche:%d/%d/%d\n\n\n\n\n",I.nom,I.prenom,I.sexe,I.role,I.cin,I.age,I.ID,I.date_naissance.jour,I.date_naissance.mois,I.date_naissance.annee,I.date_embauche.jour,I.date_embauche.mois,I.date_embauche.annee);

  }
   while(((fread(&I,sizeof(Infirmier),1,f))!=0)&&(feof(f)!=0));
}
else
{
printf("erreur lors de l'ouverture du fichier_infirmier");
}
fclose(f);
}
/*----------------------------------------------------------------------------------------------------------------------------------------------*/
void modifier_infirmier_ID( char fichier_infirmier[],Infirmier I,int ID)
{   
    int choix2;
    char ma[10]="masculin";
    char fe[10]="feminin";
    char tmp_infirmier[]="tmp_infirmier.txt";
    FILE *f ;
    FILE *t ;
    f=fopen(fichier_infirmier,"rb+") ;
    t=fopen(tmp_infirmier,"wb+") ;
    
    if (f!= NULL)
     {
      while(fread(&I,sizeof(Infirmier),1,f)!=0)
       {
            if(ID==I.ID)
             {
             afficher_infirmier_ID(fichier_infirmier,I,ID);
             printf("taper le numero du coordonners a modifier\n1:nom\t2:prenom\t3:sexe\t4:date d_ambauche\t5:date de naissance\t6:role\t7:cin\t8:age\t9:num d_identifiant\n");
             
/*ouvrir le fichier_infirmier en mode ecriture*/ 

 choix2=choix_num();
              switch(choix2)
             {
case 1:            do
                   {
                   printf("donner le nom\n");
                   scanf("%s",I.nom);
                   }
                   while((strlen(I.nom))<3);
break;
case 2:
                   do
                   {
                   printf("donner le prenom\n");
                   scanf("%s",I.prenom);
                   }
                   while((strlen(I.nom))<3);
break;
case 3:
                    do
                    {
                    printf("donner le sexe\n");
                    scanf("%s",I.sexe);
                    }
                    while(((strcmp(ma,I.sexe))!=0)&&((strcmp(fe,I.sexe))!=0));
break;
case 4:             do
                    {
                    printf("donner la date d'embauche\n");
                    scanf("%d%d%d",&(I.date_embauche.jour),&(I.date_embauche.mois),&(I.date_embauche.annee));
                    }
while(((I.date_embauche.jour)>31)||((I.date_embauche.jour)<1)||((I.date_embauche.mois)<1)||((I.date_embauche.mois)>12)||((I.date_embauche.annee)<2014));
                    if((I.date_embauche.mois)==2)
                    {
                    do
                    {
                    printf("erreur de saisie du jour !!!\n");
                    printf("donner le jour d'embauche correctte !!\n");
                    scanf("%d",&(I.date_embauche.jour));
                    }
                    while(((I.date_embauche.jour)>28)||((I.date_embauche.jour)<1));
                    }
break;
case 5:
                     do
                     {
                      printf("donner la date de naissance\n");
                      scanf("%d%d%d",&(I.date_naissance.jour),&(I.date_naissance.mois),&(I.date_naissance.annee));
                     }
while(((I.date_naissance.jour)>31)||((I.date_naissance.jour)<1)||((I.date_naissance.mois)<1)||((I.date_naissance.mois)>12)||((I.date_naissance.annee)>1989));
                    if((I.date_naissance.mois)==2)
                    {
                     do
                     {
                     printf("erreur de saisie du jour !!!\n");
                     printf("donner le jour de naissance correctte !!\n");
                     scanf("%d",&(I.date_naissance.jour));
                     }
                     while(((I.date_embauche.jour)>28)||((I.date_embauche.jour)<1));
                     }
break;
case 6:              printf("donner le role\n");
                     scanf("%s",I.role);
                     
break;
case 7:              do
                     {
                     printf("donner la cin\n");
                     scanf("%ld",&(I.cin));
                     }
                     while(((I.cin)<1000000)||((I.cin)>99999999));
break;
case 8:             do
                    {
                    printf("donner l'age\n");
                    scanf("%d",&(I.age));
                    }
                    while(((I.age)<26)||((I.age)>75));
break;
case 9:             do
                    {
                    printf("donner le num d_identifiant\n");
                    scanf("%d",&(I.ID));
                    }
                    while(((I.ID)<1)||((I.ID)>10000));
break;
default: printf("\nmauvais choix\n");

  }
              
             }
  	     fwrite(&I,sizeof(Infirmier),1,t) ;
             }
       } fclose(f) ;
         fclose(t) ;


       
       f=fopen(fichier_infirmier,"wb") ;
     t=fopen(tmp_infirmier,"rb") ;
     if(f!=NULL && t!=NULL)
{
     while(fread (&I,sizeof(Infirmier),1,t)!=0)
     {fwrite(&I,sizeof(Infirmier),1,f) ;}
}
     fclose(f) ;
     fclose(t) ;  
     t=fopen(tmp_infirmier,"wb") ;
     if (t!=NULL)
     {
      printf("le fichier tmp_infirmier est vider\n\n");
     }



   printf("-----------------------\n");
   printf("le patient ayant le numero d'identification  %d est modifier\n",ID );
   printf("-----------------------\n");

    
}
/*-----------------------------------------------------------------------------------------*/
void init_liste_infirmier(char fichier_infirmier[])
{
Infirmier I;
FILE *f;
f=fopen(fichier_infirmier,"wb");
if(f!=NULL)
{
 printf("le fichier infirmier est initialiser\n");
}           
else
{
printf("erreur lors de l'ouverture du fichier_infirmier\n");
}
fclose(f); 
}
/*------------------------------------------------------------------------------------------------------------------------*/
